package com.jp.knowledge.activity;


import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.baidu.bdocreader.BDocInfo;
import com.baidu.bdocreader.BDocView;
import com.baidu.bdocreader.downloader.DocDownloadManager;
import com.baidu.bdocreader.downloader.DocDownloadableItem;
import com.jp.knowledge.R;
import com.jp.knowledge.comm.SlidingActivity;
import com.jp.knowledge.model.DocBean;
import com.jp.knowledge.util.L;
import com.jp.knowledge.util.SampleObserver;
import com.jp.knowledge.webUtil.X5WebView;

/**
 * 文档读取activity
 */
public class ReadDocActivityold extends SlidingActivity {
    float currentSize = 1.0f;
    private BDocView   mDocView;
    private  BDocInfo docInfo;

    private DocBean docBean;
    private SampleObserver observer;

    private X5WebView webView;

    // Warning: 如果将该对象引用 放在Application子类中，要确认用户名发生改变时，重新调用getInstance，会得到一个新的对象
    DocDownloadManager downloadManager;
    @Override
    protected int getResourceId() {
        return R.layout.activity_read_doc_old;
    }

    @Override
    protected void init() {

//        initReadInfo();
        initdocInfo();
        initRead();
//        readDocWebView();//使用webView加载
    }

    /**
     * webView加载
     */
    private void readDocWebView() {
        String url ="http://h.jp580.com/httpclient-tutorial.pdf";
        initWebView();
        webView.loadUrl(url);
    }


    /**
     * 初始化webView
     */
    private void initWebView() {
        webView = (X5WebView) findViewById(R.id.web_content);
//        QbSdk.allowThirdPartyAppDownload(true);
        X5WebView.setSmallWebViewEnabled(true);// 开启webview窗口转移功能


    }

    private void initdocInfo() {

        docBean= getIntent().getParcelableExtra("doc");
         String userName = "广州创将";
        downloadManager = DocDownloadManager.getInstance(this, userName);
        /**
         * 特注：因为token有时间限制，以下字段请填写为你自己的信息，否则文档无法显示。
         */
        String host = "BCEDOC"; // 百度云传回的host
        String docId = "doc-gm3kzmzpyz2asn7"; // 百度云传回的docId
        String docType = "doc"; // 文档类型 doc/ppt/ppts等
        String token = "TOKEN"; // 百度云传回的token
        if(docBean!=null){
            docId = docBean.getBaiduCode()==null?docId:docBean.getBaiduCode(); // 百度云传回的docId
            docType=docBean.getFormat()==null?docType:docBean.getFormat();
            host=docBean.getHost()==null?host:docBean.getHost();
            token =docBean.getToken()==null?token:docBean.getToken();
        }

        String thisDocDir = ""; // 文档下载器会返回文档的下载路径，到时通过docInfo.setLocalFileDir更新。
        // !!特注!!：以上目录，指定为空串""时表示在线浏览
        int totalPage = 35; // 总页数，必须准确填写 否则在离线浏览时会有问题
        String docTitle = "百度云文档服务";
        int startPage = 1; // 起始浏览页，最小值为1，请不要填入小于1的值

        docInfo = new BDocInfo(host, docId, docType, token)
                .setLocalFileDir(thisDocDir)
                .setTotalPage(totalPage)
                .setDocTitle(docTitle)
                .setStartPage(startPage);


        observer = new SampleObserver(null, docInfo);

        DocDownloadableItem item = downloadManager.getDocDownloadableItemByDocId(docInfo.getDocId());
        if (item != null) {
            item.addDocObserver(observer);
            observer.update(item);
        } else {
//            tvState.setText("state: not started");
        }

//        docInfo.enablePagePreview(2); // 仅显示前两页
    }


    private void initRead(){
        loading.show();
        final Handler mHandler = new Handler();
        mDocView = (BDocView) findViewById(R.id.dv_doc);
        final ProgressBar mProgress = (ProgressBar) findViewById(R.id.progressBar);

        try {
            mDocView.setOnDocLoadStateListener(new BDocView.OnDocLoadStateListener() {
                @Override
                public void onDocLoadComplete() {
                    Log.d("test", "onDocLoadComplete");
                    mHandler.post(new Runnable() {
                        @Override
                        public void run() {
//                            mProgress.setVisibility(View.GONE);
                            loading.cancel();
                            mDocView.setVisibility(View.VISIBLE);
                        }
                    });
                }

                @Override
                public void onDocLoadFailed(String errorDesc) {
                    Log.d("test", "onDocLoadFailed errorDesc=" + errorDesc);
                    // errorDesc format: ERROR_XXXX_DESC(code=xxxxx)
                    if (errorDesc.startsWith(BDocView.ERROR_DESC_BDOCINFO_CHECK_FAILED)) {
                        Log.d("test", "bdocInfo is invalid");
                    } else if (errorDesc.startsWith(BDocView.ERROR_DESC_LOAD_RENDER_FALED)) {
                        Log.d("test", "load render failed, please connect to Baidu Cloud");
                    } else if (errorDesc.startsWith(BDocView.ERROR_DESC_RENDER_INTERNAL_ERROR)) {
                        Log.d("test", "render error, may be the token is expired");
                        String code = errorDesc.split("=")[1].replace(")", "");
                        Log.d("test", "render error, code=" + code);
                    }
                    mHandler.post(new Runnable() {
                        @Override
                        public void run() {
//                            mProgress.setVisibility(View.GONE);
                            loading.cancel();
                        }
                    });
                }

                @Override
                public void onCurrentPageChanged(int currentPage) {
                    // 记录当前页面
                    Log.i("test", "currentPage = " + currentPage);
                }
            });
            mDocView.loadDoc(docInfo);
        } catch (Exception e1) {
            e1.printStackTrace();
        }

        // 设置字号大小
        TextView tvBigger = (TextView) findViewById(R.id.tv_bigger);
        TextView tvSmaller = (TextView) findViewById(R.id.tv_smaller);
        tvBigger.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // demo步长0.5f, 实际使用时可根据自己需要设置步长(每次点击的增减值)
                currentSize = Math.min(2.0f, currentSize + 0.5f);
                /**
                 * setFontSize 可以接受float值的取值范围为(0,2]
                 * 即：0到2之间的float值，不包含0，包含2。
                 */
                mDocView.setFontSize(currentSize);
            }

        });
        tvSmaller.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // demo步长0.5f, 实际使用时可根据自己需要设置步长(每次点击的增减值)
                currentSize = Math.max(0.5f, currentSize - 0.5f);
                /**
                 * setFontSize 可以接受float值的取值范围为(0,2]
                 * 即：0到2之间的float值，不包含0，包含2。
                 */
                mDocView.setFontSize(currentSize);

            }

        });
    }
    /**
     * 准备文档信息
     */
    private void initReadInfo() {
        /**
         * 特注：因token有时间限制，以下字段请填写为你自己的信息，否则文档无法显示。
         */
        /**
         * 特注：因为token有时间限制，以下字段请填写为你自己的信息，否则文档无法显示。
         */
        String host = "BCEDOC"; // 百度云传回的host
//        String docId = "doc-gkjraanw4f89uu5"; // 百度云传回的docId
        String docId = "doc-gm2x6azr3szh1hx"; // 百度云传回的docId
        String docType = "doc"; // 文档类型 doc/ppt/ppts等
        String token = "TOKEN"; // 百度云传回的token
        String thisDocDir = ""; // 文档下载器会返回文档的下载路径，到时通过docInfo.setLocalFileDir更新。
        // !!特注!!：以上目录，指定为空串""时表示在线浏览
        int totalPage = 3; // 总页数，必须准确填写 否则在离线浏览时会有问题
        String docTitle = "百度云文档服务";
        int startPage = 1; // 起始浏览页，最小值为1，请不要填入小于1的值

        docInfo = new BDocInfo(host, docId, docType, token)
                .setLocalFileDir(thisDocDir)
                .setTotalPage(totalPage)
                .setDocTitle(docTitle)
                .setStartPage(startPage);

        mDocView.setOnDocLoadStateListener(new BDocView.OnDocLoadStateListener() {
            @Override
            public void onDocLoadComplete() {
                L.d("test", "onDocLoadComplete");
            }
            @Override
            public void onDocLoadFailed(String errorDesc) {
                // errorDesc format: ERROR_XXXX_DESC(code=xxxxx)
                L.d("test", "onDocLoadFailed errorDesc=" + errorDesc);
            }
            @Override
            public void onCurrentPageChanged(int currentPage) {
                // 记录当前页面
                L.i("test", "currentPage = " + currentPage);
            }
        });
// 加载文档
        mDocView.loadDoc(docInfo);
    }



}
